2 research outputs found
Frex: dependently-typed algebraic simplification
We present an extensible, mathematically-structured algebraic simplification
library design. We structure the library using universal algebraic concepts: a
free algebra -- fral -- and a free extension -- frex -- of an algebra by a set
of variables. The library's dependently-typed API guarantees simplification
modules, even user-defined ones, are terminating, sound, and complete with
respect to a well-specified class of equations. Completeness offers intangible
benefits in practice -- our main contribution is the novel design. Cleanly
separating between the interface and implementation of simplification modules
provides two new modularity axes. First, simplification modules share thousands
of lines of infrastructure code dealing with term-representation,
pretty-printing, certification, and macros/reflection. Second, new
simplification modules can reuse existing ones. We demonstrate this design by
developing simplification modules for monoid varieties: ordinary, commutative,
and involutive. We implemented this design in the new Idris2 dependently-typed
programming language, and in Agda
homotopy.io: a proof assistant for finitely-presented globular -categories
We present the proof assistant homotopy.io for working with
finitely-presented semistrict higher categories. The tool runs in the browser
with a point-and-click interface, allowing direct manipulation of proof objects
via a graphical representation. We describe the user interface and explain how
the tool can be used in practice. We also describe the essential subsystems of
the tool, including collapse, contraction, expansion, typechecking, and layout,
as well as key implementation details including data structure encoding,
memoisation, and rendering. These technical innovations have been essential for
achieving good performance in a resource-constrained setting